package com.smartleanx.module.hrm.controller.admin.employee.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.smartleanx.module.infra.api.file.dto.FileRefRespDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;

@Schema(description = "管理后台 - 离职信息 Response VO")
@Data
public class EmployeeLeaveRespVO {


    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long id;

    @Schema(description = "员工id", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long employeeId;

    @Schema(description = "员工姓名")
    private String name;
    @Schema(description = "员工工号")
    @ExcelProperty("员工工号")
    private String employeeNo;

    @Schema(description = "部门")
    @ExcelProperty("部门")
    private Long deptId;

    @Schema(description = "岗位")
    @ExcelProperty("岗位")
    private Long postId;

    @Schema(description = "计划离职日期/离职日期", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime separationTime;

    @Schema(description = "申请离职日期", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime applySeparationTime;

    @Schema(description = "离职类型", requiredMode = Schema.RequiredMode.REQUIRED)
    private String separationType;

    @Schema(description = "离职原因", requiredMode = Schema.RequiredMode.REQUIRED)
    private String separationReason;

    @Schema(description = "备注")
    private String remarks;

    @Schema(description = "离职申请文件id列表")
    private List<FileRefRespDTO> applyFileIdList;

    @Schema(description = "离职承诺书文件id列表")
    private List<FileRefRespDTO> commitFileIdList;

    @Schema(description = "离职协议文件id列表")
    private List<FileRefRespDTO> protocolFileIdList;

    @Schema(description = "工作交接")
    private List<FileRefRespDTO> workHandoverFileIdList;

    @Schema(description = "其他文件id列表")
    private List<FileRefRespDTO> otherFileIdList;

    @Schema(description = "审核流程实例的编号")
    private String approveProcessInstanceId;

    @Schema(description = "审核结果")
    private Integer approveResult;

    @Schema(description = "原员工状态")
    private Integer oldEmployeeState;

    @Schema(description = "记录提交类型")
    private Integer createType;

    @Schema(description = "提交时间")
    private LocalDateTime createTime;

}
